package com.berchen.code.kaisa;

/**
 * 凯撒加密
 */
public class KaisaTest {
    public static void main(String[] args) {
        // 原文
        String input="Hello World";
        // 将原文往后移动三位
        int key=3;

        String codeStr=kaisaEncrypt(key,input);
        String s = kasaiDecrypt(key, codeStr);
        System.out.println(codeStr+" ===>>>> "+s);

    }

    /**
     * 解密
     * @param key
     * @param str
     * @return
     */
    public static String kasaiDecrypt(int key,String str){

        return crypt(key,str,false);
    }

    /**
     * 加密
     * @param input
     * @return
     */
    public static String kaisaEncrypt(int key,String input) {
        return crypt(key,input,true);
    }

    /**
     *
     * @param key       密钥
     * @param str
     * @param encrypt   是否是加密啊 true 加密 false  解密
     * @return
     */
    public static String crypt(int key,String str,boolean encrypt){
        char[] chars = str.toCharArray();
        StringBuilder sb=new StringBuilder();
        for (char aChar : chars) {
            int b =aChar;
            if(encrypt) {
                // 往右边移动
                b = b + key;
            }else {
                // 往左边移动
                b=b-key;
            }
            char charB= (char) b;
            sb.append(charB);
        }
        return sb.toString();
    }
}
